﻿using System;
using System.Windows.Input;
using Microsoft.Practices.Prism.Commands;

namespace RIABlog.Web.Models
{
	/// <summary>
	/// Клиентское расширение базового класса команд
	/// </summary>
	public partial class BaseCommand : IContextAware
	{
		public string ImageUrl
		{
			get { return "/RIABlog;component/Assets/Images/" + this.RelativeImageUrl; }
		}

		private DelegateCommand<Guid?> _executeCommand;
		/// <summary>
		/// Команда выполнения команды. Вызывает Invoke-метод контекста
		/// </summary>
		public ICommand ExecuteCommand
		{
			get 
			{
				return _executeCommand ?? (_executeCommand = new DelegateCommand<Guid?>
					(
						entityId => this.BlogContext.ExecuteCommand
							(
								this, 
								entityId.HasValue ? entityId.Value : Guid.Empty,
								this.BlogContext.OnCommandExecuted,
								null
							))
					); 
			}
		}

		/// <summary>
		/// Ссылка на контекст
		/// </summary>
		public RIABlogContext BlogContext
		{
			get { return (RIABlogContext)this.Context; }
		}

		#region Implementation of IContextAware

		public RIABlogBaseDomainContext Context { get; set; }

		#endregion
	}
}
